package com.ruoyi.quartz.task;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.lock.service.IOracleDataSyncService;
import com.ruoyi.lock.service.IATenantuserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 定时任务调度测试
 *
 * @author ruoyi
 */
@Component("ryTask")
public class RyTask {
    
    @Autowired
    private IOracleDataSyncService oracleDataSyncService;
    
    @Autowired
    private IATenantuserService aTenantuserService;

    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) {
        System.out.println(StringUtils.format("执行多参方法： 字符串类型{}，布尔类型{}，长整型{}，浮点型{}，整形{}", s, b, l, d, i));
    }

    public void ryParams(String params) {
        System.out.println("执行有参方法：" + params);
    }

    public void ryNoParams() {
        System.out.println("执行无参方法");
    }

    /**
     * 查询Oracle数据库中的用户卡信息（仅在center环境执行）
     */
//    public void queryOracleUserCard() {
//        // 智能选择同步类型：如果有数据则增量同步，否则全量同步
//        try {
//            Date maxUpdateTime = aTenantuserService.getMaxSUpdateTime();
//            if (maxUpdateTime != null) {
//                // 有数据，执行增量同步
//                Calendar calendar = Calendar.getInstance();
//                calendar.setTime(maxUpdateTime);
//                calendar.add(Calendar.MINUTE, -1); // 减去1分钟，确保不遗漏数据
//                Date syncStartTime = calendar.getTime();
//
//                // 构造增量同步的时间参数
//                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
//                String timeStr = sdf.format(syncStartTime);
//                String syncTypeWithTime = "current_" + timeStr;
//
//                System.out.println("定时任务：执行增量同步，同步时间: " + syncTypeWithTime);
//                oracleDataSyncService.syncOracleUserCard(syncTypeWithTime);
//            } else {
//                // 没有数据，执行全量同步
//                System.out.println("定时任务：执行全量同步");
//                oracleDataSyncService.syncOracleUserCard("all");
//            }
//        } catch (Exception e) {
//            System.err.println("定时任务执行Oracle同步失败: " + e.getMessage());
//            e.printStackTrace();
//            // 发生异常时，回退到全量同步
//            System.out.println("定时任务：发生异常，执行全量同步作为备选方案");
//            oracleDataSyncService.syncOracleUserCard("all");
//        }
//    }

    /**
     * 查询Oracle数据库中的用户卡信息（仅在center环境执行）
     *
     * @param type 查询类型：current-当前时间，all-2020年以后的所有数据
     */
    public void queryOracleUserCard(String type) {
        // 调用lock模块的Oracle数据同步服务
        oracleDataSyncService.syncOracleUserCard(type);
    }
}
